#ifndef __WIZ_ALGORITHM_SORT_HPP__SHANHAOBO_19800429__
#define __WIZ_ALGORITHM_SORT_HPP__SHANHAOBO_19800429__

#include "../../../Base/Type/WizBaseType.hpp"

#include "../../../Base/WizBaseTemplateUtils.hpp"

namespace Wiz
{
    namespace Sort
    {
        namespace Bubble
        {
            ////////////////////////////////////////////////////////////////////
            template<class T>
            ::Wiz::Void::Type Ascending(T* v, ::Wiz::UInt::In Cnt)
            {
                register ::Wiz::UInt::Type i, j;

                for (i = Cnt; i > 1; --i)
                {
                    for (j = 1; j < i; ++j)
                    {
                        if (v[j - 1] > v[j])
                        {
                            ::Wiz::Swap(v[j - 1], v[j]);
                        }
                    }
                }
            }
            ////////////////////////////////////////////////////////////////////
            ////////////////////////////////////////////////////////////////////
            template<class T>
            ::Wiz::Void::Type Descending(T* v, ::Wiz::UInt::In Cnt)
            {
                register ::Wiz::UInt::Type i, j;

                for (i = Cnt; i > 1; --i)
                {
                    for (j = 1; j < i; ++j)
                    {
                        if (v[j - 1] < v[j])
                        {
                            ::Wiz::Swap(v[j - 1], v[j]);
                        }
                    }
                }
            }
            ////////////////////////////////////////////////////////////////////
        } /// end of namespace Bubble
    } /// end of namespace Sort
} /// end of namespace Wiz

#endif /*__WIZ_ALGORITHM_SORT_HPP__SHANHAOBO_19800429__*/
